<%--
    Document   : editplaylist
    Created on : 15.05.2011, 17:22:34
    Author     : 647_2
--%>

<%@page import="ExtEntities.VeryExtPlaylist"%>
<%@page import="Access.UsersRemote"%>
<%@page import="Entities.User"%>
<%@page import="Access.PlaylistsRemote"%>
<%@page import="ExtEntities.VeryExtGroup"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Locale"%>
<%@page import="java.text.DateFormat"%>
<%@page import="ExtEntities.ExtComposition"%>
<%@page import="Entities.SoundRecordingCompany"%>
<%@page import="ExtEntities.VeryExtAlbum"%>
<%@page import="Access.AlbumsRemote"%>
<%@page import="java.text.spi.DateFormatProvider"%>
<%@page import="java.sql.Date"%>
<%@page import="Entities.URL"%>
<%@page import="Access.URLsRemote"%>
<%@page import="Access.ExecutorsWithInstrumentRemote"%>
<%@page import="Entities.ExecutorWithInstrument"%>
<%@page import="Entities.Genre"%>
<%@page import="Access.GenresRemote"%>
<%@page import="Access.GroupsRemote"%>
<%@page import="Entities.Group"%>
<%@page import="java.util.LinkedList"%>
<%@page import="params.Params"%>
<%@page import="Access.CompositionsRemote"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="ExtEntities.VeryExtComposition"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title><% out.print("Правка/добавление плейлиста - " + Params.getSiteName()); %></title>
    </head>
    <body>
        <% out.print(Params.getHeader("Правка/добавление плейлиста")); %>

        <%
                   out.println("<a href=\"" + Params.getSiteURL() + "editplaylist.jsp?mode=0\">[добавить новый плейлист]</a> ");
                   out.println("<a href=\"" + request.getHeader("referer") + "\">[на предыдущую страницу]</a><br /><br />");

                   InitialContext ic = new InitialContext();
                   CompositionsRemote r = (CompositionsRemote)ic.lookup(CompositionsRemote.class.getName());
                   PlaylistsRemote pl = (PlaylistsRemote)ic.lookup(PlaylistsRemote.class.getName());
                   UsersRemote us = (UsersRemote)ic.lookup(UsersRemote.class.getName());


                   int mode = 0;
                   int ID = 0;
                   int uID = 0;
                   int compID = 0;
                   int position = 0;
                   String name = "";

                   mode = Integer.parseInt(request.getParameter("mode"));

                   switch(mode){

                       case 6: //удаление плейлиста

                           if (request.getParameter("ID") != null){

                             ID = Integer.parseInt(request.getParameter("ID"));

                             if (pl.DeletePlaylist(ID)){
                                out.println("Плейлист успешно удалён! А жаль :(");
                             } else {
                                out.println("Плейлист не удалён!");
                             }
                           } else {
                              out.println("Неверные параметры");
                           }
                           break;

                           case 5: //удаление композиции

                           if (request.getParameter("compID") != null){

                             compID = Integer.parseInt(request.getParameter("compID"));

                             if (pl.DeleteCompositionOfPlaylist(compID)){
                                out.println("Исполнитель успешно удалён из группы!");
                             } else {
                                out.println("Исполнитель не удалён из группы!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 4: //добавление композиции

                             if ((request.getParameter("ID") != null) && (request.getParameter("compID") != null) && (request.getParameter("position") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             compID = Integer.parseInt(request.getParameter("compID"));
                             position = Integer.parseInt(request.getParameter("position"));

                             if (pl.AddCompositionInPlaylist(ID, compID, position)){
                                out.println("Композиция успешно добавлена в плейлист!");
                             } else {
                                out.println("Композиция не добавлена в плейлист!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 3: //принятие данных правки

                             if ((request.getParameter("name") != null) && (request.getParameter("ID") != null) && (request.getParameter("uID") != null)){

                              name = request.getParameter("name");
                              name = new String(name.getBytes("ISO-8859-1"), "UTF-8");

                              uID = Integer.parseInt(request.getParameter("uID"));
                              ID = Integer.parseInt(request.getParameter("ID"));

                              if (pl.UpdatePlaylist(ID, name, uID)){
                                    out.println("Плейлист обновлён!");
                              } else {
                                    out.println("Плейлист не обновлён!");
                              }
                              } else {
                                 out.println("Неверные параметры");
                             }
                            break;

                         case 2: //страница правки (несколько блоков)

                             if (request.getParameter("ID") != null){

                             ID = Integer.parseInt(request.getParameter("ID"));

                             VeryExtPlaylist playlist = pl.getFullPlaylist(ID);

                             if (playlist != null){

                             //Блок правки данных плейлиста
                             out.println("Правка данных плейлиста: <br />");
                             out.println("<form action=\"" + Params.getSiteURL() + "editplaylist.jsp?mode=3&ID=" + playlist.getID() + "\" method=\"POST\">");
                             out.println("Название: <input type=\"text\" name=\"name\" value=\"" + playlist.getName() + "\"/><br />");

                             LinkedList<User> users = us.getAllUsers();

                             out.print("Автор: <select name=\"uID\">");

                             for (int i = 0; i < users.size(); i++){
                                 if (users.get(i).getIDAsInt() == playlist.getAuthor().getIDAsInt()){
                                   out.print("<option value=\"" + users.get(i).getIDAsInt() + "\" selected>" + users.get(i).get_login() + "</option>");
                                 } else {
                                   out.print("<option value=\"" + users.get(i).getIDAsInt() + "\">" + users.get(i).get_login() + "</option>");
                                 }
                             }

                             out.print("</select><br />");

                             out.println("<input type=\"submit\" value=\"Править\"/>");
                             out.println("</form>");

                             //Добавление/удаление композиций

                             LinkedList<ExtComposition> comps = r.getAllCompositions();

                             if (comps != null){

                             out.println("<form action=\"" + Params.getSiteURL() + "editplaylist.jsp?mode=4&ID=" + playlist.getID() + "\" method=\"POST\">");
                             out.print("Добавление композиции: <select name=\"compID\">");

                             for (int i = 0; i < comps.size(); i++){
                                   out.print("<option value=\"" + comps.get(i).getID() + "\">" + comps.get(i).getName() + " (" + Params.getMinSec(comps.get(i).getDuration()) + ")</option>");
                             }

                             out.print("</select>");
                             out.println(", позиция: <input type=\"text\" name=\"position\" value=\"1\"/>");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             }

                             out.println("<form action=\"" + Params.getSiteURL() + "editplaylist.jsp?mode=5\" method=\"POST\">");
                             out.print("Удаление композиции: <select name=\"compID\">");

                             for (int i = 0; i < playlist.getCompositions().size(); i++){
                                   out.print("<option value=\"" + playlist.getCompositions().get(i).getIDAsInt() + "\">" + playlist.getCompositions().get(i).get_composition().get_name() + " (" + Params.getMinSec(playlist.getCompositions().get(i).get_composition().get_duration()) + ")</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");


                             out.println("<a href=\"" + Params.getSiteURL() + "editplaylist.jsp?mode=6&ID=" + playlist.getID() + "\">[удалить плейлист]</a>");
                             } else {
                                 out.println("Данный плейлист не содержится в базе");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                            break;

                          case 1: //обработчик добавления

                              if ((request.getParameter("name") != null) && (request.getParameter("uID") != null)){

                              name = request.getParameter("name");
                              name = new String(name.getBytes("ISO-8859-1"), "UTF-8");

                              uID = Integer.parseInt(request.getParameter("uID"));

                              if (pl.AddPlaylist(name, uID)){
                                    out.println("Плейлист добавлен успешно!");
                              } else {
                                    out.println("Плейлист не добавлен!");
                              }
                              } else {
                                 out.println("Неверные параметры");
                             }
                              break;

                          case 0: //страница добавления
                          default:
                              out.println("<form action=\"" + Params.getSiteURL() + "editplaylist.jsp?mode=1\" method=\"POST\">");
                              out.println("Название: <input type=\"text\" name=\"name\" /><br />");
                              
                              LinkedList<User> users = us.getAllUsers();

                              out.print("Автор: <select name=\"uID\">");

                              for (int i = 0; i < users.size(); i++){
                                   out.print("<option value=\"" + users.get(i).getIDAsInt() + "\">" + users.get(i).get_login() + "</option>");
                              }

                              out.print("</select><br />");

                              out.println("<input type=\"submit\" value=\"Добавить\"/>");
                              out.println("</form>");

                   }


        %>
        <% out.print(Params.getFooter()); %>
    </body>
</html>
